Código a ejecutar para empezar (de clic en donde en dice “Code”, para desplegar el código, y luego copie y pegue en una sesión abierta de R):
Code
# cambia idioma de la consola de R a español:Sys.setenv(LANG="es")# usar 2 cifras significativas y tiende a evitar # notación científica (ver ayuda de función: `options`): options(digits =2, scipen =999) # cargar librerías: if(!require(igraph)){install.packages("igraph"); library(igraph)}if(!require(sand)){install.packages("sand"); library(sand)}
Introducción
La cohesión se refiere a la medida en que subconjuntos de vértices específicos son cohesivos (adherentes) respecto a la relación que define las aristas.
Cliques
Un enfoque para definir la cohesión de una red es mediante la especificación de subgrafos de interés.
Un clan (clique) C de un grafo G=(V,E) es un subconjunto de vértices tal que cada par de vértices distintos son adyacentes, i.e., el subgrafo de Ginducido por C es un grafo completo.
Clanes de tamaños más grandes incluyen clanes de tamaños más pequeños.
En la práctica, clanes “grandes” son escasos, ya que requieren que el grafo sea denso, pero las redes reales comúnmente son dispersas (sparse).
Díadas y tríadas
Otras cantidades de interés son las díadas y las tríadas.
¿Cuáles son los estados diádicos no dirigidos y dirigidos?
¿Y los triádicos?
Estados triádicos no dirigidos (undirected triadic motifs):
Estados triádicos dirigidos (directed triadic motifs):
Davis, J.A. and Leinhardt, S. (1972). The Structure of Positive Interpersonal Relations in Small Groups. In J. Berger (Ed.), Sociological Theories in Progress, Volume 2, 218-251. Boston: Houghton Mifflin.
Un censo de los estados diádicos o triádicos proporciona una medida de la conectividad de una red.
Ejemplo: Reforma Tributaria en Colombia.
Red de influencia en Twitter (ahora X) sobre la Reforma Tributaria en Colombia, en el contexto de su aprobación en el Congreso.
Estos datos fueron recolectados para estudiar las dinámicas de interacción entre usuarios de la red social, en relación con las opiniones sobre la Reforma Tributaria.
Los usuarios están conectados mediante aristas ponderadas por el número de interacciones (tuits, retuits, citas y comentarios) relacionadas con el tema.
El artículo asociado a estos datos puede ser encontrado aquí.
set.seed(123)par(mfrow =c(1,1), mar =c(4, 3, 3, 1))plot(g, layout = layout_with_kk, vertex.label =NA, vertex.size =3, vertex.frame.color =1, edge.arrow.size =0.5, main ="")
Censo de estados triádicos
# 003 A,B,C, el grafo vacío.# 012 A->B, C, el grafo con un único borde dirigido.# 102 A<->B, C, el grafo con una conexión mutua entre dos vértices.# 021D A<-B->C, la estrella con conexiones salientes (out-star).# 021U A->B<-C, la estrella con conexiones entrantes (in-star).# 021C A->B->C, línea dirigida.# 111D A<->B<-C.# 111U A<->B->C.# 030T A->B<-C, A->C.# 030C A<-B<-C, A->C.# 201 A<->B<->C.# 120D A<-B->C, A<->C.# 120U A->B<-C, A<->C.# 120C A->B->C, A<->C.# 210 A->B<->C, A<->C.# 300 A<->B<->C, A<->C, el grafo completo.triad_census(g)
# mut El número de pares con conexiones mutuas.# asym El número de pares con conexiones no mutuas.# null El número de pares sin conexión entre ellos.dyad_census(g)
$mut
[1] 0
$asym
[1] 745
$null
[1] 199916
La mayoría de los estados son nulos, y entre aquellos que no lo son, casi todos presentan asimetría, lo que indica una unilateralidad predominante en la forma en que los participantes de la conversación se mencionan en los tuits.
Densidad
La densidad (density) de un grafo se define como la frecuencia relativa de las aristas observadas respecto al potencial de aristas.
Para un subgrafo H=(V_H,E_H) del grafo G=(V,E), la densidad se calcula como
\textsf{den(H)}=\frac{|E_H|}{|V_H|(|V_H|-1)/2}\,.
En el caso de un digrafo el denominador debe ser |V_H|(|V_H|-1).
La densidad asume valores entre 0 y 1 y se puede interpretar como una medida de qué tan cerca se encuentra H de ser un clan.
Una tripla está constituida por tres nodos que están conectados por dos (tripla abierta) o tres (tripla cerrada) aristas.
La transitividad (transitivity) de un grafo se cuantifica por medio del coeficiente de agrupamiento (clustering coeffitient) que se calcula como
\textsf{cl} (G) =\frac{\text{no. triplas cerradas}}{\text{no. triplas}} =\frac{3\times \text{no. triángulos}}{\text{no. triplas}} = \frac{3\tau_\triangle(G)}{\tau_3(G)}\,,
donde \tau_\triangle(G) es el número de triángulos de G y \tau_3(G) es el número de triplas.
El coeficiente de agrupamiento es una medida de agrupamiento global que caracteriza la propensión con la que las triplas forman triángulos.
Transitividad local
El coeficiente de agrupamiento del vértice v\in V se define teniendo en cuenta la incidencia de v en las aristas que conforman las triplas:
\textsf{cl}(v) = \frac{\text{no. triplas cerradas que incluyen a $v$}}{k_v(k_v-1)/2}\,,
donde k_v es el grado del nodo v.
El coeficiente de agrupamiento de un vértice es una medida de agrupamiento local que cuantifica qué tan cerca están los vecinos del vértice de ser un clan.
Alternativamente, el coeficiente de agrupamiento global también se puede definir como el promedio de los coeficientes de agrupamiento locales de todos los vértices:
\textsf{cl} (G) = \frac{1}{|V|}\sum_{v\in V} \textsf{cl}(v)\,.
Ejemplo
Número de triángulos por vértice
head(count_triangles(graph = gnd),20)
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
Vértices que son parte de un triángulo
triangles(graph = gnd)
+ 3/634 vertices, named, from 8bb1951:
[1] Mamertos0 RoyBarreras FedericoYBabaji
Conteos de estados triádicos
(mot <-motifs(graph = gnd, size =3))
[1] NA NA 11851 1
Transitividad global
transitivity(graph = gnd, type ="global")
[1] 0.00025
Transitividad local
head(sort(transitivity(graph = gnd, type ="local"),decreasing = T))
mean(transitivity(graph = gnd, type ="local", vids =V(gnd)), na.rm = T)
[1] 0.0058
Intransitividad local de Gustavo Petro
transitivity(gnd, type ="local", vids =c('petrogustavo'))
petrogustavo
0
Reciprocidad
Un concepto exclusivo de los dígrafos es la reciprocidad, i.e., la propensión con la que hay reciprocidad de aristas en la red.
Las frecuencias se pueden calcular respecto al número de díadas o de aristas:
\textsf{rec}(G) = \frac{\text{no. aristas reciprocas}}{\text{no. aristas}}\,,
o alternativamente,
\textsf{rec}(G) = \frac{\text{no. diadas reciprocas}}{\text{no. diadas no reciprocas}}\,.
Ejemplo
Reciprocidad (aristas)
reciprocity(gnd, mode ="default")
[1] 1
Reciprocidad (díadas)
reciprocity(gnd, mode ="ratio")
[1] 1
Conectividad
Comúnmente una de las componentes conectadas de un grafo G=(V,E) domina a las demás en magnitud. Tal componente se denomina componente gigante (giant component).
En la práctica, la atención se restringe a la componente gigante para llevar a cabo tanto el análisis como el modelamiento.
Un grafo G=(V,E) se llama k-conectado (k-connected) si |V|>k y la remoción de cualquier subconjunto de vértices X \subset V tal que |X| < k da como resultado un subgrafo que continua estando conectado.
Conectividad nodal
La conectividad nodal de un grafo G=(V,E) corresponde al entero más grande k tal que G es k-conectado.
Alternativamente, también se puede definir como el número mínimo de nodos que deben eliminarse para desconectar el grafo.
Un vértice que la ser removido desconecta el grafo se denomina vértice de corte (cut vertex) o punto de articulación (articulation point).
La identificación de tales vértices proporciona una idea de dónde es vulnerable una red.
Ejemplo
Creación de la red
f <-graph(edges =c(1,2,1,3,2,3,1,4,4,5), directed = F)